package com.water_work_form.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.water_work_form.entity.RecordSpectrophotometric;
import com.baomidou.mybatisplus.extension.service.IService;

import java.io.IOException;
import java.util.Map;

/**
 * <p>
 * 记录——分光光度法检测铝、铁、氨、亚硝酸盐原始记录 服务类
 * </p>
 *
 * @author xuke
 * @since 2023-09-14
 */
public interface RecordSpectrophotometricService extends IService<RecordSpectrophotometric> {

    /**
     * 记录——分光光度法检测铝、铁、氨、亚硝酸盐原始记录 项目查询（两个查询项+分页+排序）
     * @param checkSite 检测地点（check_site） 若为空则不进行此项查询，否则返回模糊查询后的数据
     * @param checkStartDate 检测日期（check_date） 范围查询开始日期，若为空则不进行此项查询，否则返回check_date大于checkStartDate的数据
     * @param checkEndDate 检测日期（check_date） 范围查询结束日期，若为空则不进行此项查询，否则返回check_date小于checkEndDate的数据
     * @param status 项目状态（status） 若为空则不进行此项查询，否则返回对应数据
     * @param current 分页查询 当前页数
     * @param size 分页查询 每页最大数据量
     * @return 返回符合以上查询条件的数据 并按照 状态（status）、领样日期（receive_date）、检测日期（check_date）的先后顺序作为优先级（即状态status为优先级最高，进行首先排序）进行升序排序
     */
    IPage<RecordSpectrophotometric> selectRecordSpectrophotometric(String checkStartDate, String checkEndDate, String checkSite, String status, Integer current, Integer size);

    /**
     * 记录——分光光度法检测铝、铁、氨、亚硝酸盐原始记录 基础表数据查询
     * @param formName form表name查询项
     * @param type device表name查询项
     * @param name1 多表查询项 基础表restriction、curve、curve_preparation、formula、drug的name列查询项（除drug表外查询到的都是对应项，而drug表查询所有符合的数据列表）
     * @param name2 多表查询项 基础表restriction、curve、curve_preparation、formula、drug的name列查询项（除drug表外查询到的都是对应项，而drug表查询所有符合的数据列表）
     * @param name3 多表查询项 基础表restriction、curve、curve_preparation、formula、drug的name列查询项（除drug表外查询到的都是对应项，而drug表查询所有符合的数据列表）
     * @param name4 多表查询项 基础表restriction、curve、curve_preparation、formula、drug的name列查询项（除drug表外查询到的都是对应项，而drug表查询所有符合的数据列表）
     * @param name5 restriction表name列查询项
     * @param waterId water表id列查询项
     * @param volume volume表name列查询项
     * @return 返回所有符合的数据项，仅有一个查询项的表以表名作为键，大于一个查询项的键名对应查询项数字
     */
    Map<String,Object> selectBasicSpectrophotometric(String formName, String type, String name1, String name2, String name3, String name4, String name5, String waterId,
                                                     String volume);

    void downloadRecordSpectrophotometric(RecordSpectrophotometric recordSpectrophotometric) throws IOException;
}
